From: Rui Matos Date: Fri, 4 Nov 2011 00:26:49 +0000 (+0000) Subject: messageTray: use a "hot corner" to summon the tray X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~7261 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0cbaeaefedef84d57b1c24be37927ac6c4837edf;p=gnome-shell.git messageTray: use a "hot corner" to summon the tray Instead of leaving the tray covering the whole last pixel row when it's hidden, hide it completely. This avoids mouse events not being delivered to application windows on the last pixel row. To summon the tray we use a single reactive pixel on the corner. https://bugzilla.gnome.org/show_bug.cgi?id=663366 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 79dbe3d98..057b0493f 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1430,8 +1430,16 @@ const MessageTray = new Lang.Class({ this._notificationRemoved = false; this._reNotifyAfterHideNotification = null; + this._corner = new Clutter.Rectangle({ width: 1, + height: 1, + opacity: 0, + reactive: true }); + this._corner.connect('enter-event', Lang.bind(this, this._onCornerEnter)); + Main.layoutManager.trayBox.add_actor(this._corner); + Main.layoutManager.trackChrome(this._corner); + Main.layoutManager.trayBox.add_actor(this.actor); - this.actor.y = -1; + this.actor.y = this.actor.height; Main.layoutManager.trackChrome(this.actor); Main.layoutManager.trackChrome(this._notificationBin); @@ -1470,12 +1478,24 @@ const MessageTray = new Lang.Class({ this._chatSummaryItemsCount = 0; }, + _onCornerEnter: function(actor, event) { + this._pointerInSummary = true; + this._updateState(); + }, + _setSizePosition: function() { let monitor = Main.layoutManager.bottomMonitor; this._notificationBin.x = 0; this._notificationBin.width = monitor.width; this._summaryBin.x = 0; this._summaryBin.width = monitor.width; + + if (St.Widget.get_default_direction() == St.TextDirection.RTL) + this._corner.x = 0; + else + this._corner.x = Main.layoutManager.trayBox.width - 1; + + this._corner.y = Main.layoutManager.trayBox.height - 1; }, contains: function(source) { @@ -2076,7 +2096,7 @@ const MessageTray = new Lang.Class({ _hideTray: function() { this._tween(this.actor, '_trayState', State.HIDDEN, - { y: -1, + { y: this.actor.height, time: ANIMATION_TIME, transition: 'easeOutQuad' });